package cn.itcast.web.controller.stat;

import cn.itcast.service.stat.StatService;
import cn.itcast.web.controller.BaseController;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;
import java.util.Map;
import java.util.Set;

@Controller
@RequestMapping(value = "/stat",name = "统计分析")
public class StatController extends BaseController {

    // 实现页面跳转
    @RequestMapping("/toCharts")
    public String toCharts(String chartsType){
        return "stat/stat-"+chartsType;
    }


    @Reference
    private StatService statService;

    // 厂家销售
    @RequestMapping("/factoryCharts")
    @ResponseBody
    public List<Map> factoryCharts() {
        return statService.findFactoryCharts(getCompanyId());
    }


    // 产品排行榜
    @RequestMapping("/sellCharts")
    @ResponseBody
    public List<Map> sellCharts(){
        return statService.findSellCharts(getCompanyId());
    }


    // 系统访问
    @RequestMapping("/onlineCharts")
    @ResponseBody
    public List<Map> onlineCharts(){
        return statService.findOnlineCharts(getCompanyId());
    }


    //查询市场价最高的前10名产品 highest
    @RequestMapping("/highestCharts")
    @ResponseBody
    public List<Map> highestCharts(){
        List<Map> highestCharts = statService.findHighestCharts(getCompanyId());
        int a = 100;
        //1.遍历 list集合
        for (Map<String,Integer> map : highestCharts) {
            //2.遍历map集合 获取map集合里面的所有key值 并且组合成为一个set集合(去重)
            Set<String> set = map.keySet(); //这个时候他里面的两个值为 name 和value
            //3.开始遍历set集合
            for (String s : set) {
                //获取到字符串为 name 和 value的两个值 开始将他们原封不动的再次赋值为map的key值
                //如果让我们不判断的话 他赋值的时候所有的 map所有的key值将都是100
                if (s.equals("name")){
                    //当他的值为name的时候 那么我们应该给map的name值赋产品名称

                    map.put(s,map.get(s));
                }
                if (s.equals("value")){
                    //当他的值为value的时候 那么我们应该给map的value值赋产品产品价格
                    map.put(s,a);
                }
            }
            a=a-10;
        }
        return highestCharts;
    }
    //统计公司内每个部门的人数people
    @RequestMapping("/peopleCharts")
    @ResponseBody
    public List<Map> peopleCharts(){
        List<Map> peopleCharts = statService.findPeopleCharts(getCompanyId());
        return peopleCharts;
    }
    //统计公司内每个人签订的购销合同数 signed
    @RequestMapping("/signedCharts")
    @ResponseBody
    public List<Map> signedCharts(){
        return statService.findSignedCharts(getCompanyId());
    }

}
